package com.tesisutn.restsoft.dominio.pedido;

import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;

import com.tesisutn.restsoft.dominio.excepciones.AccionIlegalException;
import com.tesisutn.restsoft.dominio.interfaces.ObjetoDeDominio;
import com.tesisutn.restsoft.dominio.pedido.estadosMesa.EstadoMesa;

@Entity
public class Mesa implements ObjetoDeDominio{
	@Id
    @GeneratedValue
    private Long id;
    private String descripcion;
    @Enumerated(EnumType.STRING)
    private EstadoMesa estado;

    public Mesa(){
        estado = EstadoMesa.Disponible;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }
    
    public EstadoMesa getEstado() {
        return estado;
    }

    public void setEstado(EstadoMesa estado) {
        this.estado = estado;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }
    
    public void reservar() throws AccionIlegalException{
        estado.reservar(this);
    }

    public void cancelarReserva() throws AccionIlegalException{
        estado.cancelarReserva(this);
    }

    public void ocupar() throws AccionIlegalException{
        estado.ocupar(this);
    }

    public void liberar() throws AccionIlegalException{
        estado.liberar(this);
    }

    public void habilitar() throws AccionIlegalException{
        estado.liberar(this);
    }

    public void deshabilitar() throws AccionIlegalException{
        estado.deshabilitar(this);
    }
    
    @Override
    public String toString() {
        return descripcion;
    }
}
